/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package AplicacionMVC;

import funciones.PacienteCita;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.Map;
import oracle.net.aso.g;

/**
 *
 * @author Jesus Ruiz Oliva
 */
public class ModeloCitas {
    private  BaseDatos bd;
    ModeloCitas() throws SQLException{
        bd = new BaseDatos();        
    }
    public void conectar() throws SQLException{
        bd.conectar();
    }
    public void conectarScrolable() throws SQLException{
        bd.conectar(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
    }
    public void desconectar() throws SQLException{
        bd.desconectar();
    }
    
    public Map<Integer,PacienteCita> getCitas(String idMedico) throws SQLException{
        String nombre,dni,nss,fecha,motivo;
        Boolean estaAtendido;
        
        
        ResultSet resultado  = bd.consultar("SELECT PACIENTES.NOMBRE,CITAS.DNI,CITAS.NSS,TO_CHAR(CITAS.FECHA,'dd/mm/yyyy hh24:mi')FECHACITA,CITAS.IDMEDICO,CITAS.FECHA," 
                + "CITAS.MOTIVO,(SELECT DIAGNOSTICO FROM DIAGNOSTICO WHERE (CITAS.NSS = DIAGNOSTICO.NSS AND CITAS.DNI = DIAGNOSTICO.DNI" 
                + " AND CITAS.IDMEDICO = DIAGNOSTICO.IDMEDICO AND CITAS.FECHA = DIAGNOSTICO.FECHA)) DIAGNOSTICO" 
                + " FROM CITAS,PACIENTES WHERE (CITAS.NSS = PACIENTES.NSS) AND TO_CHAR(CITAS.FECHA,'DD/MM/YY')=TO_CHAR(SYSDATE,'DD/MM/YY')"
                + "AND CITAS.IDMEDICO='"+idMedico+"' order by citas.fecha");

        int i=0;
        Map<Integer,PacienteCita> pacientes = new HashMap<Integer, PacienteCita>();
        while(resultado.next()){
            nombre = resultado.getString("NOMBRE");
            dni = resultado.getString("DNI");
            nss = resultado.getString("NSS");
            fecha = resultado.getString("FECHACITA");
            motivo = resultado.getString("MOTIVO");
            estaAtendido= (resultado.getString("DIAGNOSTICO") != null);           
            pacientes.put(new Integer(i), new PacienteCita(nombre,dni,nss,fecha,estaAtendido,motivo));
            i++;
        }
        //Otra solucion seria hacer que el resultset sea scrollable y asi  puedes desplazar al ultimo registro
        //usando last() y luego usanado getRow() para que te de el numero de fila        
        return pacientes;
    }
    
    /*public static void main (String arg[]) throws SQLException{
        ModeloCitas md = new ModeloCitas(); 
        md.conectar();
        Map<Integer,PacienteCita> p = md.getCitas("15485232V");
        PacienteCita pc = p.get(0);
        System.out.println("Nombre: " + pc.getNombre());
        System.out.println("DNI: " + pc.getDNI());
        System.out.println("NSS: " + pc.getNSS());
        System.out.println("Atendido: " + pc.getEstaAtendido());
        System.out.println("Fecha: " + pc.getFecha());
        md.desconectar(); 
    }*/
            
}
